import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/*
 * @lc app=leetcode.cn id=350 lang=java
 *
 * [350] 两个数组的交集 II
 */

// @lc code=start
class Solution {
    public int[] intersect(int[] nums1, int[] nums2) {
        if(nums1.length>nums2.length){
            return intersect(nums2, nums1);
        }
        Map<Integer,Integer> map=new HashMap<>();
        List<Integer> res=new ArrayList<>();
        for(int s:nums1){
            map.put(s, map.getOrDefault(s, 0)+1);
        }
        for(int key:nums2){
            if(map.containsKey(key)){
                if(map.get(key)>0){
                    res.add(key);
                    map.put(key,map.get(key)-1);
                }else{
                    map.remove(key);
                }
            }
        }
        int[] ret=new int[res.size()];
        for(int i=0;i<res.size();i++){
            ret[i]=res.get(i);
        }
        return ret;

    }
}
// @lc code=end

